<?php
namespace Admin\Model;
use Think\Model;

	class GoodsModel extends Model{
	//限制表单中只允许添加的字段，防止前台被人恶意篡改，添加不应该有的字段
	
		
		protected $_insertFields = 'good_name,good_price,market_price,is_onsale,good_decs';
		
		
	//定义验证规则,第四个参数1代表必须验证，默认0，只有当表单里存在这个字段的时候验证。
		protected $_validate = array(
			array('good_name','require','商品名称不能为空',1),
			array('good_price','currency','本店价格必须为货币类型',1),
			array('market_price','currency','市场价格必须为货币类型',1),	
		);
		
// 	钩子方法，在添加数据之前会自动被调用,是一个前置方法

// 		第一个参数是即将要插入表单中的数据，是一个数组,如果要改变$data，那么要按引用传值&$data，函数内部需要改变函数外部的变量，必须按引用传递，除非传递的是一个对象，因为对象默认就是按引用传递
		protected function _before_insert(&$data,$option){

// 			自动获取当前时间插入数据库
			$data['addtime']=date('Y-m-d H:i:s',time());
			
			
			$data['good_decs'] = removeXSS($_POST['good_decs']);
			
			
// 			$_FILES['logo']['error']=0代表此时有上传图片
				
			if($_FILES['logo']['error']==0){

				$upload = new \Think\Upload();// 实例化上传类
				
				$upload->maxSize   =     3145728 ;// 设置附件上传大小
				
				$upload->exts      =     array('jpg', 'gif', 'png', 'jpeg');// 设置附件上传类型
				
				$upload->rootPath  =      './Public/Uploads/'; // 设置附件上传根目录
				
				$upload->savePath  =      'Goods/'; // 设置附件上传(子)目录
				
				$info   =   $upload->upload();
				
				// 上传文件
				
				if(!$info) {// 上传错误提示错误信息
					
					
// 					这个地方是个重点，在模型中是不能直接输出错误信息的，这时要把错误信息赋给模型的error属性，这样控制器就可以直接调用  模型->getError()来输出错误信息了。
					
					$this->error = $upload->getError();
					
// 					结束执行且返回False

					return False;
					
				}else{// 上传成功 获取上传文件信息
					
					

					$logo = $info['logo']['savepath'].$info['logo']['savename'];
					
					$mbiglogo = $info['logo']['savepath'].'mbig_'.$info['logo']['savename'];
					
					$biglogo = $info['logo']['savepath'].'big_'.$info['logo']['savename'];
					
					$midlogo = $info['logo']['savepath'].'mid_'.$info['logo']['savename'];
					
					$smlogo = $info['logo']['savepath'].'sm_'.$info['logo']['savename'];
					
 					
					$image = new \Think\Image();
					
					$image->open('./Public/Uploads/'.$logo);
					
					$image->thumb(700, 700)->save('./Public/Uploads/'.$mbiglogo);
					
					$image->thumb(350, 350)->save('./Public/Uploads/'.$biglogo);
					
					$image->thumb(130, 130)->save('./Public/Uploads/'.$midlogo);
					
					$image->thumb(50, 50)->save('./Public/Uploads/'.$smlogo);

					$data['logo'] = $logo;
					
					$data['mbig_logo'] = $mbiglogo;
					
					$data['big_logo'] = $biglogo;
					
					$data['mid_logo'] = $midlogo;
					
					$data['sm_logo'] = $smlogo;
					
				}		
						
			}
			
			
		}
		
		
		//其他的钩子方法：
// 		_after_insert($option)   插入数据的后置方法
// 		_before_update(&$data,$option)  修改数据的前置方法
// 		_after_update($option)  修改数据的后置方法
// 		_before_delete($option)  删除数据的前置方法
// 		_after_delete($option)  删除数据的后置方法
 	}